/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package View;

import Model.Grille;
import commun.Bille;
import java.util.Scanner;

/**
 *
 * @author Karen & Renaud & François
 */
public class Vue {

    public Vue() {
    }

    // affiche le menu d'accueil 
    public void msgHello() {
        System.out.println("         Bienvenue dans Mastermind");
        System.out.println("      ===============================");
        System.out.println();
        System.out.println(" Vous devez trouver la combinaison gagnante...");
        System.out.println(" Blanc : Le pion est dans la combinaison mais mal placé ! ");
        System.out.println(" Noir : Le pion est de la bonne couleur et bien placé !");
        System.out.println();
        System.out.println(" à tout moment tappez 'q' pour quitter");
    }

    public void mainMenu() {
        System.out.println();
        System.out.println("Vous avez le choix entre : 1)Connecté  2)Local  3)Statistiques ");
    }

    public void connectMenu() {
        System.out.println();
        System.out.println("Vous avez le choix entre : 1)Creation d'utilisateur  2)Log In ");
    }

    public void localMenu() {
        System.out.println();
        System.out.println("Vous avez le choix entre 2 types de parties : 1)Automatique  2)Manual ");
    }

    public void configMenu() {
        System.out.println();
        System.out.println("Choisisez entre diferents type de configurations : 1)Beginer 2)Normal  3)Pro  l)Log OUT  s)Stats perso");
    }

    // affiche la configuration du jeu      
    public Grille configuration() {
        Grille deJeu;
        int choixTent = 0;
        int choixBilles = 0;
        int choixColors = 0;
        Scanner clavier = new Scanner(System.in);
        System.out.println();
        System.out.println("     [ Configuration du jeu ]");
        System.out.println();
        System.out.println(" Note : Restez correct dans vos choix pour garder un plaisir de jeu !");
        System.out.print(" Entrez le nombre de tentatives (entre 5 et 15 !) : ");
        while (choixTent < 5 || choixTent > 15) {
            choixTent = clavier.nextInt();
            if (choixTent < 5 || choixTent > 15) {
                System.err.println(" Vous n'avez pas entré un nombre entre 5 et 15 !");
            }
        }
        System.out.print(" Combien de billes voulez vous (entre 4 et 8 !) :");
        while (choixBilles < 4 || choixBilles > 8) {
            choixBilles = clavier.nextInt();
            if (choixBilles < 4 || choixBilles > 8) {
                System.err.println(" Vous n'avez pas entré un nombre entre 4 et 8 !");
            }
        }
        System.out.print(" Entrez le nombre de couleurs differentes (entre 4 et 8 !) :");
        while (choixColors < 4 || choixColors > 8) {
            choixColors = clavier.nextInt();
            if (choixColors < 4 || choixColors > 8) {
                System.err.println(" Vous n'avez pas entré un nombre entre 4 et 8 !");
            }
        }
        System.out.println();
        deJeu = new Grille(choixTent, choixBilles, choixColors);
        return deJeu;
    }

    public void partiePerdue() {
        System.out.println(" Vous avez perdu la partie !!");
        System.out.println("r) recommancer la même partie, n) nouvelle configuration");
    }

    public void partieGagnee() {
        System.out.println(" Bravo vous avez gagné la partie !!");
        System.out.println("r) on en fait une autre ?, n) nouvelle configuration");
    }

    public void finDeJeu() {
        System.out.println(" Le jeu va se fermer..A bientôt ! ");
    }

    // affiche le choix des couleurs
    public void printColors(int colors) {
        System.out.print('\t');
        System.out.println("      Vous disposez des couleurs : ");
        System.out.print('\t');
        for (int i = 1; i <= colors; i++) {
            System.out.print(" " + i + ") " + getColors(i));
        }
        System.out.println("  Q = Quitter  R=Recommencer");
        System.out.println("");
    }

    public void printAutoConfig(int tent, int billes, int colors) {
        System.out.print('\t');
        System.out.println("      Nouvelle Partie : ");
        System.out.print('\t');
        System.out.println("     -------- Configuration automatique ---------");
        System.out.println("     Nombre de tentatives : " + tent);
        System.out.println("     Nombre de billes à placer : " + billes);
        System.out.println("     Nombre de choix de couleurs : " + colors);
        System.out.println("");

    }

    public void msgError() {
        System.out.println(" Vous n'avez pas entrer le bon choix !!!");
    }

    public void msgEnterCombi(int i) {
        System.out.println("[Tour " + i + "]");
        System.out.print('\t');
        System.out.println("Proposez une combinaison en separent avec les espaces:");
    }

    public void msgExit() {
        System.out.print('\t');
        System.out.println("EXIT");

    }

    public void msgWin(int numTour) {
        System.out.println();
        System.out.println("            Bravo");
        System.out.println(" gagnié à la " + numTour + " tentative");

    }

    public void msgWin(int numTour, int score) {
        System.out.println();
        System.out.println("            Bravo");
        System.out.println(" gagnié à la " + numTour + " tentative");
        System.out.println(" votre score est : " + score);

    }

    public void msgFail() {
        System.out.println();
        System.out.println("            Bravo");
        System.out.println(" vous avez PERDU!!!");
    }

    // affichage de la grille (historique des coup)
    public void printGrille(Grille grille) {
        int bille = 0;
        int nbColonnes = grille.get_plateau()[0].length; // chaque ligne a le meme nombre de colonnes

        for (int i = 0; i < grille.numTour; i++) {

            while (bille < nbColonnes) {            // je ne vois pas l'interet d'avoir un while ici.

                System.out.print("   " + grille.get_plateau()[i][bille].name());

                bille++;
            }
            // affichage de separation entre les billes et pions
            System.out.print("  ___  ");
            System.out.print("Pions Noirs [" + grille.getPion()[i].getNoir() + "] ");
            System.out.print(" Pions Blancs [" + grille.getPion()[i].getBlanc() + "]");

            System.out.println();
            bille = 0;
        }

    }

    // affichage en guise de test
    public void printTest(Bille[] toPrint) {
        System.out.println("(En guise de test) ");
        for (int i = 0; i < toPrint.length; i++) {
            if (toPrint[i] != null) {
                System.out.print(" " + toPrint[i].name());
            }
        }

    }

    private String getColors(int i) {
        String out = " ";
        switch (i) {
            case 1:
                out = "BLANC";
                break;
            case 2:
                out = "BLEU";
                break;
            case 3:
                out = "JAUNE";
                break;
            case 4:
                out = "NOIR";
                break;
            case 5:
                out = "ORANGE";
                break;
            case 6:
                out = "ROUGE";
                break;
            case 7:
                out = "VERT";
                break;
            case 8:
                out = "VIOLET";
                break;
            case 9:
                out = "OCRE";
                break;
            case 10:
                out = "SMARAGDIN";
                break;
        }
        return out;
    }
//------------ concernant user et login

    public void userNew() {
        System.out.println("");
        System.out.println("Creation de nouvel utilisateur");
        System.out.println("Entrez votre nom");

    }

    public void userLogin() {
        System.out.println("");
        System.out.println("Connexion");
        System.out.println("Entrez votre nom");
    }

    public void userPass() {
        System.out.println("Entrez votre Password");
    }

    public void userError1() {
        System.out.println("");
        System.out.println("utilisateur existe déjà");
    }

    public void userError2() {
        System.out.println("");
        System.out.println("Login ou Pass erroné");
    }

    public void userOK() {
        System.out.println("");
        System.out.println("<= access granted =>");
    }

    public void userNewOK() {
        System.out.println("");
        System.out.println("<= new user created =>");
    }

    public void userLogOut(String user) {
        System.out.println("");
        System.out.println("Déconnection");
        System.out.println(user + ", Merci d'avoir joué avec nous");

    }
    //-----------------------------------------------

    public Grille configType(int choixBilles) {
        Grille deJeu;
        int choixTent = 0;
        int choixColors = 0;
        Scanner clavier = new Scanner(System.in);
        System.out.println();
        System.out.println("     [ Configuration du jeu ]");
        System.out.println();
        System.out.println(" Note : Restez correct dans vos choix pour garder un plaisir de jeu !");
        System.out.print(" Entrez le nombre de tentatives (entre 5 et 15 !) : ");
        while (choixTent < 5 || choixTent > 15) {
            choixTent = clavier.nextInt();
            if (choixTent < 5 || choixTent > 15) {
                System.err.println(" Vous n'avez pas entré un nombre entre 5 et 15 !");
            }
        }

        System.out.print(" Entrez le nombre de couleurs differentes (entre " + choixBilles + " et " + (choixBilles + 2) + " !) :");
        while (choixColors < choixBilles || choixColors > (choixBilles + 2)) {
            choixColors = clavier.nextInt();
            if (choixColors < choixBilles || choixColors > (choixBilles + 2)) {
                System.err.println(" Vous n'avez pas entré un nombre entre " + choixBilles + " et " + (choixBilles + 2) + " !");
            }
        }
        System.out.println();
        deJeu = new Grille(choixTent, choixBilles, choixColors);
        return deJeu;
    }

    public void printStats(String userName, String[] input) {

        System.out.print('\t');
        System.out.println("                            Statistiques:");
        System.out.print('\t');
        System.out.println("        User: " + userName);
        System.out.println();

        if (input.length == 0) {
            System.out.println(" vous n'avez pas encore joué de parties... ");
        } else {
            for (int i = 0; i < input.length; i++) {

                String[] ligne = input[i].split(" "); // split de la ligne pour avoir ( [0] nom de config  [1]  score ...
                if (ligne.length > 1) {
                    System.out.println(" Config: " + ligne[0] + " : " + ligne[1] + " --------- Score: " + ligne[2]);
                } else {
                    System.out.println(" Config: " + ligne[0] + " vous n'avez pas encore joué une partie de cette config");
                }
            }
        }
        System.out.println();
    }

    public void printStats(String[] input, int x) {
        String[] ligne;
        //----------------------

        System.out.println("                            Top " + input.length + " de config :" + x);
        System.out.println("");

        if (input.length == 0) {
            System.out.println(" Personne a joué dans cette config... ");
        } else {
            for (int i = 0; i < input.length; i++) {
                ligne = input[i].split(" "); // split de la ligne pour avoir ( [0] nom   [1]  score ...
                System.out.println(" :" + (i + 1) + "  Nom: " + ligne[0] + " ____________ Sous-Config : " + ligne[1] + " ____________ Score : " + ligne[2]);

            }
        }
        System.out.println("");
        // il faut un waite ou sleep ou getch (de C++)

    }
}
